﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Facade.Interface;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Seguridad.ControlExeption;
using System.Data.SqlClient;
namespace Crosland.Automotriz.Facade.Facade
{
    public class FacadePronosticoImportacion : iFacadePronosticoImportacion
    {
        public IEnumerable<Object> listaGrupoArticuloRepuestosLLantas()
        {

            clsTd_Grupo_ArticuloLogic l = new clsTd_Grupo_ArticuloLogic();
            return l.listaGrupoArticuloRepuestosLLantas();
        }
        public IEnumerable<Object> listarSolicitudPrimer()
        {
            clsSolicitudAprobacionLogic BL_SolucitudAprobacion = new clsSolicitudAprobacionLogic();
            return BL_SolucitudAprobacion.listarSolicitudPrimer();
        }
        public String ObtieneCorreoUsuario(string strIdUsuario)
        {
            clsSolicitudAprobacionLogic BL_SolucitudAprobacion = new clsSolicitudAprobacionLogic();
            return BL_SolucitudAprobacion.ObtieneCorreoUsuario(strIdUsuario);
        }
        public IEnumerable<Object> listarSolicitudSegundo()
        {
            clsSolicitudAprobacionLogic BL_SolucitudAprobacion = new clsSolicitudAprobacionLogic();
            return BL_SolucitudAprobacion.listarSolicitudSegundo();
        }

        public bool Actualiza_Estado(int nu_pedido, int id_estado, string no_Estado)
        {
            ActualizarPedidoLogic BL_Pedido_cam = new ActualizarPedidoLogic();
            return BL_Pedido_cam.Actualiza_Estado(nu_pedido, id_estado);
        }

        public int UltimoNumero()
        {
            ActualizarPedidoLogic TB_Actualizarpedido = new ActualizarPedidoLogic();
            return TB_Actualizarpedido.UltimoNumero();
        }

        public List<V_pronostico_importacion> listar()
        {
            clsTD_articulo_servicioLogic TB_TD_Articulo_Servicio_Logic = new clsTD_articulo_servicioLogic();
            return TB_TD_Articulo_Servicio_Logic.listar();
        }

        public bool Insertar(TH_PRONOSTICO_IMP_CAB Obj, List<TH_PRONOSTICO_IMP_DET> Objdet)
        {
            ActualizarPedidoLogic TB_ActualizarPedido = new ActualizarPedidoLogic();
            return TB_ActualizarPedido.Insertar(Obj, Objdet);
        }

        clsGeneraImportacionLogic TB_GenerarImportacion = new clsGeneraImportacionLogic();
        public bool generarImportacion(int ID_ORG_VTA,String ID_GRUPO_ARTICULOS, string fec_ini, string fec_fin, string tipo_abc, string id_usuario)
        {

            return TB_GenerarImportacion.generar(ID_ORG_VTA,ID_GRUPO_ARTICULOS, fec_ini, fec_fin, tipo_abc, id_usuario);
        }

        public IEnumerable<Object> listar_cabecera(int nu_anio, int nu_estado)
        {
            try
            {
                ActualizarPedidoLogic actualizarPedidoLogic = new ActualizarPedidoLogic();
                return actualizarPedidoLogic.Listar_cabecera(nu_anio, nu_estado);
            }
            catch (SqlException sqlEx)
            {
                throw new RunException("ERROR EN EL PROCEDIMIENTO listar_cabecera", sqlEx);
            }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }
        }


        public IEnumerable<Object> Listar_cabeceraPorAprobar(int nu_anio, int nu_estado, String strIdUsuario)
        {
            try
            {
                ActualizarPedidoLogic actualizarPedidoLogic = new ActualizarPedidoLogic();
                return actualizarPedidoLogic.Listar_cabeceraPorAprobar(nu_anio, nu_estado, strIdUsuario);
            }
            catch (SqlException sqlEx)
            {
                throw new RunException("ERROR EN EL PROCEDIMIENTO listar_cabecera", sqlEx);
            }
        
        }

        public IEnumerable<Object> Listar_cabeceraPorConfirmar(int nu_anio, int nu_estado, String strIdUsuario)
        {

            try
            {
                ActualizarPedidoLogic actualizarPedidoLogic = new ActualizarPedidoLogic();
                return actualizarPedidoLogic.Listar_cabeceraPorConfirmar(nu_anio, nu_estado, strIdUsuario);
            }
            catch (SqlException sqlEx)
            {
                throw new RunException("ERROR EN EL PROCEDIMIENTO listar_cabecera", sqlEx);
            }
        }

        public IEnumerable<Object> listarLog_Imp_Mae_Estado()
        {
            clsLog_Imp_Mae_EstadoLogic clslog_imp_mae_estadoLogic = new clsLog_Imp_Mae_EstadoLogic();
            return clslog_imp_mae_estadoLogic.listar();
        }

        public List<TD_AUXILIAR> ListaAuxiliar()
        {
            clsTD_AuxiliarLogic clstd_Auxiliar = new clsTD_AuxiliarLogic();
            return clstd_Auxiliar.listar();
        }

        public List<TD_PROVEEDOR_EN> ListarProveedorGeneral()
        {
            clsTd_ProveedorLogic clstd_proveedor = new clsTd_ProveedorLogic();
            return clstd_proveedor.ListarProveedorGeneral();
        }


        public List<T_PRONOSTICO_PARAMETRO_REPOSICION> ListaPronosticoParametro(int NRO_PRONOSTICO)
        {
            clsT_Pronostico_Parametro_ReposicionLogic l = new clsT_Pronostico_Parametro_ReposicionLogic();
            return l.ListaPronosticoParametro(NRO_PRONOSTICO);
        
        }

        public List<T_PRONOSTICO_PARAMETRO_GRUPO_ARTICULOS> ListaPronosticoParametroGrupoArticulos(int NRO_PRONOSTICO)
        {
            clsT_Pronostico_Parametro_Grupo_ArticulosLogic l = new clsT_Pronostico_Parametro_Grupo_ArticulosLogic();
            return l.ListaPronosticoParametroGrupoArticulos(NRO_PRONOSTICO);
        
        }


        public string IdUsuarioPrimerNivel(int nivel,string email)
        {
            clsSolicitudAprobacionLogic BL_SolucitudAprobacion = new clsSolicitudAprobacionLogic();
            return BL_SolucitudAprobacion.IdUsuarioPrimerNivel(nivel,email);
        }

        public bool UpdateAprobacion(string tipo, int nroPronostico, string usuario)
        {
            clsSolicitudAprobacionLogic BL_SolucitudAprobacion = new clsSolicitudAprobacionLogic();
            return BL_SolucitudAprobacion.UpdateAprobacion(tipo, nroPronostico, usuario);
        }
    }

}
